package com.ruoyi.task.mapper;

import com.ruoyi.common.core.domain.dto.StringIntegerMapDto;
import com.ruoyi.common.core.domain.dto.TaskCommentReviewDto;
import com.ruoyi.task.domain.TaskComment;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 任务评论Mapper接口
 *
 * @author KevenPotter
 * @date 2024-04-29 13:43:02
 */
@Repository
public interface TaskCommentMapper {

    /**
     * 查询任务评论
     *
     * @param id 任务评论主键
     * @return 任务评论
     */
    TaskComment getById(Long id);

    /**
     * 根据[任务编号]获取任务评论
     *
     * @param taskId 任务编号
     * @return 返回根据[任务编号]获取任务评论
     * @author KevenPotter
     * @date 2024-04-30 14:05:19
     */
    List<TaskComment> getByTaskId(@Param("taskId") Long taskId);

    /**
     * 根据[任务编号]获取任务评论数量
     *
     * @param taskId 任务编号
     * @return 返回根据[任务编号]获取任务评论数量
     * @author KevenPotter
     * @date 2024-05-02 20:39:17
     */
    int getCommentCountsByTaskId(@Param("taskId") Long taskId);

    /**
     * 根据[任务编号]获取一级任务评论
     *
     * @param taskId 任务编号
     * @return 返回根据[任务编号]获取一级任务评论
     * @author KevenPotter
     * @date 2024-04-30 14:34:27
     */
    List<TaskComment> getLevel1List(@Param("taskId") Long taskId);

    /**
     * 根据[任务编号]获取二级任务评论
     *
     * @param taskId 任务编号
     * @return 返回根据[任务编号]获取二级任务评论
     * @author KevenPotter
     * @date 2024-04-30 14:34:39
     */
    List<TaskComment> getLevel2List(@Param("taskId") Long taskId);

    /**
     * 查询任务评论列表
     *
     * @param taskComment 任务评论
     * @return 任务评论集合
     */
    List<TaskComment> getList(TaskComment taskComment);

    /**
     * 新增任务评论
     *
     * @param taskComment 任务评论
     * @return 结果
     */
    int insertTaskComment(TaskComment taskComment);

    /**
     * 修改任务评论
     *
     * @param taskComment 任务评论
     * @return 结果
     */
    int updateTaskComment(TaskComment taskComment);

    /**
     * 删除任务评论
     *
     * @param id 任务评论主键
     * @return 结果
     */
    int deleteTaskCommentById(Long id);

    /**
     * 批量删除任务评论
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    int deleteTaskCommentByIds(Long[] ids);

    /**
     * 审核通过操作
     *
     * @param taskCommentReviewDto 任务评论审核数据传输
     * @return 返回是否审核通过
     * @author KevenPotter
     * @date 2024-04-29 15:18:17
     */
    int reviewPass(TaskCommentReviewDto taskCommentReviewDto);

    /**
     * 审核驳回操作
     *
     * @param taskCommentReviewDto 任务评论审核数据传输
     * @return 返回是否审核驳回
     * @author KevenPotter
     * @date 2024-04-29 15:18:37
     */
    int reviewReject(TaskCommentReviewDto taskCommentReviewDto);

    /**
     * 查询评论总数
     *
     * @return 返回评论总数
     * @author KevenPotter
     * @date 2024-05-01 20:05:36
     */
    int getTaskCommentCounts();

    /**
     * 查询近期评论数据
     *
     * @return 返回期评论数据
     * @author KevenPotter
     * @date 2024-05-01 22:10:54
     */
    List<StringIntegerMapDto> getRecentlyCommentCounts();
}
